import Schema from 'validate'

// 手机号验证规则
const mobileValidate = new Schema({
  mobile: {
    type: String, // 字符串类型
    required: true, // 必填
    match: /^1[3-9]\d{9}$/, // 正则
    message: '手机号码不合法', // 提示信息
  },
})
// 验证码验证规则
const codeValidate = new Schema({
  code: {
    type: String, // 字符串类型
    required: true, // 必填
    match: /^\d{6}$/, // 正则
    message: '验证码不合法', // 提示信息
  },
})

Page({
  data: {
    countDownVisible: false,
    mobile: '15564543221',
    timeData: null, //倒计时还剩的时间
    code: '', //验证码
  },

  countDownChange(ev) {
    this.setData({
      timeData: ev.detail, //倒计时还剩的时间，是一个对象
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
  // 接收参数
  onLoad({ redirectURL }) {
    this.redirectURL = redirectURL
  },
  // 获取验证码
  async onGetCode() {
    // 获取到用户输入的手机号,转为数字类型
    const { mobile } = this.data
    //  做手机格式校验, 如果验证不通过 errs.length 不等于 0
    const errs = mobileValidate.validate({ mobile: mobile })
    // console.log(errs)
    if (errs.length) {
      return wx.utils.toast(errs[0].message) //弹出提示信息
    }
    // 发送请求，获取验证码
    const res = await wx.http.get('/code', { mobile })
    // console.log(res.data.code)
    // 倒计时显示
    this.setData({
      countDownVisible: true,
      code: res.data.code,
    })
  },
  // 登录
  async onSubmit() {
    const { mobile, code } = this.data
    // 手机号校验
    const mobileErrs = mobileValidate.validate({ mobile: mobile })
    if (mobileErrs.length) {
      return wx.utils.toast(mobileErrs[0].message) //弹出提示信息
    }
    // 验证码校验
    const codeErrs = codeValidate.validate({ code: code })
    if (codeErrs.length) {
      return wx.utils.toast(codeErrs[0].message) //弹出提示信息
    }
    // 校验通过，发送登录请求
    const res = await wx.http.post('/login', { mobile, code })
    // console.log(res)
    // 登录不成功提示
    if (res.code !== 10000) return wx.utils.toast(res.message)
    // 登录成功，保存token
    const app = getApp() //获取到应用实例
    app.setToken(res.data.token, res.data.refreshToken)
    // 登录完毕，重新调转回去

    if (this.redirectURL) {
      wx.reLaunch({
        url: this.redirectURL,
      })
    } else {
      //没有来源页面 跳转到首页 是 tabbar页面
      wx.switchTab({
        url: '/pages/index/index',
      })
    }
  },
})
